import ApiClient from '@/api/apiClient';

import type { RequestBody } from 'alova';
/**

 *
 * 首页数据统计信息
 */
export interface HomeStatistics {
  /**
   * 告警数
   */
  alarmCount?: number;
  /**
   * 告警图表统计
   */
  alarmStatisticsList?: MessageStatistics[];
  /**
   * API调用图表统计
   */
  apiCallStatisticsList?: MessageStatistics[];
  /**
   * 总API调用数
   */
  apiCount?: number;
  /**
   * 设备数
   */
  deviceCount?: number;
  /**
   * 设备状态统计
   */
  deviceStatusCount?: DeviceStatusStatistics[];
  /**
   * 设备类型统计
   */
  deviceTypeCount?: DeviceTypeStatistics[];
  /**
   * MQTT消息图表统计
   */
  mqttMsgStatisticsList?: MessageStatistics[];
  /**
   * 总消息数
   */
  msgCount?: number;
  /**
   * 产品数
   */
  productCount?: number;
  /**
   * 项目数
   */
  projectCount?: number;
  /**
   * 昨日API调用数
   */
  yesterdayApiCount?: number;
  /**
   * 昨日消息数
   */
  yesterdayMsgCount?: number;
  [property: string]: unknown;
}

/**
 * 消息统计实体
 */
export interface MessageStatistics {
  /**
   * 时间
   */
  dateString?: string;
  /**
   * 数量
   */
  msgCount?: number;
  [property: string]: unknown;
}

/**
 * 设备状态统计
 */
export interface DeviceStatusStatistics {
  /**
   * 设备数量
   */
  deviceCount?: number;
  /**
   * 设备状态: 0未激活 1在线 2离线 3未知
   */
  deviceStatus?: string;
  [property: string]: unknown;
}

/**
 * 设备类型统计
 */
export interface DeviceTypeStatistics {
  /**
   * 设备数量
   */
  deviceCount?: number;
  /**
   * 设备类型: 1:直连设备 2:网关设备 3:网关子设备
   */
  deviceType?: string;
  [property: string]: any;
}

/** 获取设备位置树 */
export const homeStatistics = (data: RequestBody) => {
  return ApiClient.Post<HomeStatistics>('/manager/homepage/statistics', data, {
    // params: data,
    meta: { auth: true },
  });
};
